// 售楼处
var saleOffices = {}

// 楼层订阅者函数缓存
saleOffices.clientList = {}
/**
 * 监听（有人订阅售楼）
 * @param {*} fn 
 */
saleOffices.listen = function (key,fn) {
    if(!this.clientList[key]){
        this.clientList[key] = []
    }
    this.clientList[key].push(fn)
}
/**
 * 售楼处发布
 */
saleOffices.dispatch = function () {
    var args = Array.prototype.shift.call(arguments)
    if(!this.clientList[args] || this.clientList[args].length === 0){
        return false
    }
    for(let i = 0, fn; fn = this.clientList[args][i++];){
        // 参数为发布时候参数
        fn.apply(this,arguments)
    }
}

// saleOffices.listen(function(price,squareMeter) {
//     console.log("price--",price);
//     console.log("squareMeter--",squareMeter);
// })
// saleOffices.listen(function(price,squareMeter) {
//     console.log("price--",price);
//     console.log("squareMeter--",squareMeter);
// })

// saleOffices.dispatch(1000,80)

// 张俊杰想要80平米以下的房子并且2000块以下的，订阅者要根据自己的喜好来订阅楼房的发布
saleOffices.listen("price<2000",function(meter) {
    console.log("订阅者1--",meter);
})
saleOffices.listen("price<2000",function(meter) {
    console.log("订阅者2--",meter);
})
saleOffices.listen("price<2000",function(meter) {
    console.log("订阅者3--",meter);
})
saleOffices.listen("price>2000",function(meter) {
    console.log("订阅者4--",meter);
})

saleOffices.dispatch("price<2000",100)